import { IParam } from '../../common';

/**
 * 消息模板
 */
export interface IMsgTempl {
	/**
	 * 内容
	 * @type {string}
	 */
	content: string;
	/**
	 * 内容类型
	 * @description 值模式 [系统消息模板内容类型] {TEXT：纯文本、 HTML：HTML网页、 JSON：JSON、 PROPERTIES：Properties、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
	 * @type {( string | 'TEXT' | 'HTML' | 'JSON' | 'PROPERTIES' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
	 */
	contentType:
		| string
		| 'TEXT'
		| 'HTML'
		| 'JSON'
		| 'PROPERTIES'
		| 'USER'
		| 'USER2'
		| 'USER3'
		| 'USER4';
	/**
	 * 标题
	 * @type {string}
	 */
	subject: string;
	/**
	 * 标题多语言资源对象
	 *
	 * @type {IParam}
	 */
	subPSLanguageRes: IParam;
}

/**
 * （实体数据集合）类型视图消息
 */
export interface IDEDataSetViewMsg extends IViewMsg {
	/**
	 * 应用实体对象
	 */
	psAppDataEntity: IParam;
	/**
	 * 应用实体数据集合对象
	 *
	 */
	psAppDEDataSet: IParam;
	/**
	 * 显示次序应用实体属性对象
	 *
	 */
	orderValuePSAppDEField: IParam;
	/**
	 * 抬头应用实体属性对象
	 *
	 */
	titlePSAppDEField: IParam;
	/**
	 * 消息内容应用实体属性对象
	 *
	 */
	contentPSAppDEField: IParam;
	/**
	 * 消息类型标记应用实体属性对象
	 *
	 */
	msgTypePSAppDEField: IParam;
	/**
	 * 显示位置应用实体属性对象
	 *
	 */
	msgPosPSAppDEField: IParam;
	/**
	 * 移除标志应用实体属性对象
	 *
	 */
	removeFlagPSAppDEField: IParam;
	/**
	 * 抬头语言标记应用实体属性对象
	 *
	 */
	titleLanResTagPSAppDEField: IParam;
}

/**
 * 视图消息
 */
export interface IViewMsg {
	/**
	 * 名称
	 * @type {string}
	 */
	name: string;
	/**
	 * 代码标识
	 * @type {string}
	 */
	codeName: string;
	/**
	 * 动态模式
	 * @type {number}
	 * @default 0
	 */
	dynamicMode: number;
	/**
	 * 显示消息
	 * @type {string}
	 */
	message: string;
	/**
	 * 消息类型
	 * @description 值模式 [视图消息类型] {INFO：常规信息、 WARN：警告信息、 ERROR：错误信息、 CUSTOM：自定义信息 }
	 * @type {( string | 'INFO' | 'WARN' | 'ERROR' | 'CUSTOM')}
	 */
	messageType: string | 'INFO' | 'WARN' | 'ERROR' | 'CUSTOM';
	/**
	 * 应用消息模板
	 *
	 * @type {IMsgTempl}
	 */
	msgTempl?: IMsgTempl | null;
	/**
	 * 显示位置
	 * @description 值模式 [视图消息位置] {TOP：视图上方、 BOTTOM：视图下方、 BODY：视图内容区、 POPUP：弹出、 CUSTOM：自定义 }
	 * @type {( string | 'TOP' | 'BOTTOM' | 'BODY' | 'POPUP' | 'CUSTOM')}
	 */
	position: string | 'TOP' | 'BOTTOM' | 'BODY' | 'POPUP' | 'CUSTOM';
	/**
	 * 消息删除模式
	 * @description 值模式 [视图消息删除模式] {0：无关闭、 1：默认关闭、 2：本次关闭 }
	 * @type {( number | 0 | 1 | 2)}
	 */
	removeMode: number | 0 | 1 | 2;
	/**
	 * 抬头
	 * @type {string}
	 */
	title: string;
	/**
	 * 抬头语言资源标记
	 * @type {string}
	 */
	titleLanResTag: string;
	/**
	 * 抬头语言资源对象
	 *
	 * @type {IParam}
	 */
	titlePSLanguageRes: IParam | null;
	/**
	 * 支持关闭
	 * @type {boolean}
	 */
	enableRemove: boolean;
}

/**
 * 视图消息组成员
 */
export interface IViewMsgGroupDetail {
	/**
	 * 应用视图消息
	 *
	 * @type {IViewMsg}
	 */
	viewMsg: IDEDataSetViewMsg | IViewMsg | null;

	/**
	 * 显示位置
	 * @description 值模式 [视图消息位置] {TOP：视图上方、 BOTTOM：视图下方、 BODY：视图内容区、 POPUP：弹出、 CUSTOM：自定义 }
	 * @type {( string | 'TOP' | 'BOTTOM' | 'BODY' | 'POPUP' | 'CUSTOM')}
	 */
	position: string | 'TOP' | 'BOTTOM' | 'BODY' | 'POPUP' | 'CUSTOM';
}

/**
 * 视图消息组
 */
export interface IViewMsgGroup {
	/**
	 * 内部消息区样式
	 * @description 值模式 [视图消息显示模式] {LIST：列表显示、 MARQUEE：横向滚动显示、 MARQUEE2：纵向滚动显示、 USER：用户自定义、 USER2：用户自定义2 }
	 * @type {( string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2')}
	 */
	bodyStyle: string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2';

	/**
	 * 尾部消息区样式
	 * @description 值模式 [视图消息显示模式] {LIST：列表显示、 MARQUEE：横向滚动显示、 MARQUEE2：纵向滚动显示、 USER：用户自定义、 USER2：用户自定义2 }
	 * @type {( string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2')}
	 */
	bottomStyle: string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2';

	/**
	 * 代码标识
	 * @type {string}
	 */
	codeName: string;

	/**
	 * 应用视图消息组成员集合
	 *
	 * @type {IViewMsgGroupDetail[]}
	 */
	viewMsgGroupDetails: IViewMsgGroupDetail[] | null;

	/**
	 * 头部消息区样式
	 * @description 值模式 [视图消息显示模式] {LIST：列表显示、 MARQUEE：横向滚动显示、 MARQUEE2：纵向滚动显示、 USER：用户自定义、 USER2：用户自定义2 }
	 * @type {( string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2')}
	 */
	topStyle: string | 'LIST' | 'MARQUEE' | 'MARQUEE2' | 'USER' | 'USER2';
}
